]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
overview: Restore previous workspace switcher policy
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 20 Jul 2018 18:35:54 +0000 (20:35 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Tue, 14 Aug 2018 17:34:57 +0000 (17:34 +0000)
We used to keep the workspace switcher slid out when the user made use
of workspaces. This was changed in commit 2d84975 to give more space
to window previews, but it turned out to make the switcher quite a lot
more difficult to interact with (rather than only being a question of
discoverability). So go back to the previous behavior.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/161

js/ui/overviewControls.js

index 1b1c9cf10b835206800cd86dea70da466180a27f..4cd161374e89b8b823e8acd4bc280da848d56dae 100644 (file)
@@ -253,13 +253,23 @@ var ThumbnailsSlider = new Lang.Class({
         this.actor.add_actor(this._thumbnailsBox.actor);
 
         Main.layoutManager.connect('monitors-changed', this._updateSlide.bind(this));
+        global.workspace_manager.connect('active-workspace-changed',
+                                         this._updateSlide.bind(this));
+        global.workspace_manager.connect('notify::n-workspaces',
+                                         this._updateSlide.bind(this));
         this.actor.connect('notify::hover', this._updateSlide.bind(this));
         this._thumbnailsBox.actor.bind_property('visible', this.actor, 'visible', GObject.BindingFlags.SYNC_CREATE);
     },
 
     _getAlwaysZoomOut() {
-        // Always show the pager on hover or during a drag
-        let alwaysZoomOut = this.actor.hover || this._inDrag;
+        // Always show the pager on hover, during a drag, or if workspaces are
+        // actually used, e.g. there are windows on any non-active workspace
+        let workspaceManager = global.workspace_manager;
+        let alwaysZoomOut = this.actor.hover ||
+                            this._inDrag ||
+                            !Meta.prefs_get_dynamic_workspaces() ||
+                            workspaceManager.n_workspaces > 2 ||
+                            workspaceManager.get_active_workspace_index() != 0;
 
         if (!alwaysZoomOut) {
             let monitors = Main.layoutManager.monitors;